// 主题管理工具

// 主题列表
export const themes = {
  default: 'theme-default',
  green: 'theme-green',
  purple: 'theme-purple',
  orange: 'theme-orange',
  red: 'theme-red',
  dark: 'theme-dark',
  enterprise: 'theme-enterprise',
  tech: 'theme-tech'
}

// 获取当前主题
export function getCurrentTheme() {
  return uni.getStorageSync('theme') || 'red'
}

// 设置主题
export function setTheme(themeName) {
  if (!themes[themeName]) {
    console.warn(`主题 ${themeName} 不存在`)
    return false
  }
  
  // 保存到本地存储
  uni.setStorageSync('theme', themeName)
  
  // 应用到页面
  applyTheme(themeName)
  
  return true
}

// 应用主题到页面
export function applyTheme(themeName) {
  const themeClass = themes[themeName]
  
  // #ifdef H5
  // H5环境下操作DOM
  if (typeof document !== 'undefined' && document.body) {
    // 移除所有主题类
    Object.values(themes).forEach(className => {
      document.body.classList.remove(className)
    })
    
    // 添加新主题类
    document.body.classList.add(themeClass)
  }
  // #endif
  
  // #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU || MP-TOUTIAO || MP-QQ
  // 小程序环境下通过CSS变量设置主题
  try {
    const theme = themeConfig[themeName]
    if (theme) {
      // 设置CSS变量到全局样式
      const style = document.createElement('style')
      style.textContent = `
        :root {
          --primary-color: ${theme.primary};
          --accent-color: ${theme.accent};
        }
      `
      document.head.appendChild(style)
    }
  } catch (error) {
    console.warn('小程序主题设置失败:', error)
  }
  // #endif
  
  // #ifdef APP-PLUS
  // APP环境下通过plus API设置主题
  try {
    const theme = themeConfig[themeName]
    if (theme && plus) {
      // 可以通过plus API设置状态栏颜色等
      plus.navigator.setStatusBarStyle(theme.primary)
    }
  } catch (error) {
    console.warn('APP主题设置失败:', error)
  }
  // #endif
}

// 初始化主题
export function initTheme() {
  try {
    const currentTheme = getCurrentTheme()
    applyTheme(currentTheme)
    console.log('主题初始化成功:', currentTheme)
  } catch (error) {
    console.warn('主题初始化失败:', error)
    // 使用默认主题
    applyTheme('red')
  }
}

// 获取主题颜色值
export function getThemeColor(colorName) {
  // #ifdef H5
  if (typeof document !== 'undefined' && document.documentElement) {
    const root = document.documentElement
    return getComputedStyle(root).getPropertyValue(`--${colorName}`).trim()
  }
  // #endif
  
  // #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU || MP-TOUTIAO || MP-QQ
  // 小程序环境下返回默认颜色
  const currentTheme = getCurrentTheme()
  const theme = themeConfig[currentTheme]
  if (theme) {
    switch (colorName) {
      case 'primary-color':
        return theme.primary
      case 'accent-color':
        return theme.accent
      default:
        return theme.primary
    }
  }
  // #endif
  
  // 默认返回红色主题
  return '#C6282B'
}

// 主题配置
export const themeConfig = {
  default: {
    name: '默认主题',
    primary: '#3478f6',
    accent: '#ff6b35'
  },
  green: {
    name: '绿色主题',
    primary: '#52c41a',
    accent: '#ff7a45'
  },
  purple: {
    name: '紫色主题',
    primary: '#722ed1',
    accent: '#ff7875'
  },
  orange: {
    name: '橙色主题',
    primary: '#fa8c16',
    accent: '#ff4d4f'
  },
  red: {
    name: '红色主题',
    primary: '#C6282B',
    accent: '#fa8c16'
  },
  dark: {
    name: '深色主题',
    primary: '#1890ff',
    accent: '#ff6b35'
  },
  enterprise: {
    name: '企业主题',
    primary: '#1890ff',
    accent: '#52c41a'
  },
  tech: {
    name: '科技主题',
    primary: '#722ed1',
    accent: '#13c2c2'
  }
} 